<?php
/**
 * Model de Usuarios.
 *
 *
 * @filesource          
 * @copyright		
 * @link		http://www.pragmatia.com Pragmatia
 * @package		datagro
 * @subpackage	app.models
 * @version     1.1
 * @license		http://www.opensource.org/licenses/mit-license.php The MIT License
 * @author      Martin Radosta <mradosta@pragmatia.com>
 */


/**
 * Clase Usuario
 *
 * @package	    datagro
 * @subpackage	app.models
 */
class Usuario extends AppModel 
{ 
    var $name = 'Usuario'; 

	var $belongsTo = array(	'Grupo' =>
                        array('className'    => 'Grupo',
                              'conditions'   => '',
                              'order'        => '',
                              'dependent'    =>  true,
                              'foreignKey'   => 'grupo_id'),
							'TipoIva' =>
                        array('className'    => 'TipoIva',
                              'conditions'   => '',
                              'order'        => '',
                              'dependent'    =>  true,
                              'foreignKey'   => 'tipo_iva'),
							'EstadoSeguridad' =>
                        array('className'    => 'EstadoSeguridad',
                              'conditions'   => '',
                              'order'        => '',
                              'dependent'    =>  true,
                              'foreignKey'   => 'estado'));    


	var $hasMany = array(	'Sim' =>
                        array('className'    => 'Sim',
                              'conditions'   => '',
                              'order'        => '',
                              'dependent'    =>  true,
                              'foreignKey'   => 'usuario_id'),
							'AbonosUsuario' =>
                        array('className'    => 'AbonosUsuario',
                              'conditions'   => '',
                              'order'        => '',
                              'dependent'    =>  true,
                              'foreignKey'   => 'usuario_id'));
	var $validate = array( 
        'nombre' => array(
			array(
				'rule'	=> VALID_NOT_EMPTY, 
				'message'	=>'Debe especificar un nombre de usuario')
        ),
        'grupo_id' => array(
			array(
				'rule'	=> VALID_NOT_EMPTY, 
				'message'	=>'Debe seleccionar un grupo de la lista')
        )
		);

/*
* verifica que no ingrese un nombre de usuario repetido, ya que este se usara luego para el login
	function beforeValidate()
	{
		if ($this->id = null && !$this->isUnique('nombre'))
		{  		
			$this->invalidate("nombre", "El nombre de Usuario ya existe. Por favor escriba otro");
			return false;
		}
		return true;
	}
*/

    function validarUsuario($data) 
    { 
        $usuario = $this->find(array(	'and'=>array('or'=>array(array('Usuario.fecha_hora_desde' => '<=-!now()'), array('Usuario.fecha_hora_desde' => '0000-00-00 00:00:00'))), array(
										'or'=>array(array('Usuario.fecha_hora_hasta' => '>=-!now()'), array('Usuario.fecha_hora_hasta' => '0000-00-00 00:00:00'))),
										'Usuario.estado' => '12', 
										'Grupo.estado' => '12', 
										'Usuario.nombre' => $data['nombre'], 
										'Usuario.clave' => $data['clave'])); 

        if(!empty($usuario)) {
			$save = array("Usuario" => array("id"=>$usuario['Usuario']['id'], "ultimo_ingreso"=>date("Y-m-d H:i:s")));
			$this->save($save);
            return $usuario; 
		}
		else
			return false; 
    } 

/*
Valida que un usuario tenga permiso de acceder a un determinado controlador
*/
	function validarIngreso($usuario, $controlador) 
    { 
		$sql = "
		SELECT		1 
		FROM		controladores_grupos ControladorGrupo,
					controladores Controlador
		WHERE		ControladorGrupo.grupo_id	= '" . $usuario['Grupo']['id'] . "'
		AND			Controlador.id				= ControladorGrupo.controlador_id
		AND			Controlador.con_nombre		like '" . $controlador . "'
		AND			Controlador.con_estado		= '1'";

		$permiso = $this->query($sql);
        if(!empty($permiso)) 
            return true; 
		else
			return false; 
    } 

} 
?>